"192.168.0.1:sipop" Previous topic Chapter index Next topic

NEW_TRIGGER

 

 

Descriptions

There is no desription for trigger NEW_TRIGGER

 

Definition


CREATE TRIGGER NEW_TRIGGER FOR PRODUCTOS ACTIVE
BEFORE INSERT POSITION 0
AS
declare variable PADRE CHAR(13);
declare variable HIJO integer;
declare variable  TAM INTEGER;
declare variable HIJOMAXIMO CHAR(13);
BEGIN
  /* Trigger body */

if (NEW.id_productos IS NULL) then
BEGIN

if (new.id_padre_producto IS NULL) then
BEGIN
     NEW.id_padre_producto = 'PADRE';
     SELECT COUNT (ID_PRODUCTOS) FROM PRODUCTOS
     WHERE
           ID_PADRE_PRODUCTO = NEW.id_padre_producto
     INTO:HIJO;

     if (HIJO<10) then
      BEGIN
           NEW.ID_PRODUCTOS = HIJO ;
           NEW.hijos= 0;
      END
      else
        exception exception_padrenoexiste;
END
ELSE
  BEGIN
     SELECT ID_PRODUCTOS FROM PRODUCTOS
     WHERE
     ID_PRODUCTOS = RTRIM(NEW.id_padre_producto)
     INTO:PADRE;

     SELECT (HIJOS) FROM PRODUCTOS
     WHERE
     ID_PRODUCTOS = NEW.id_padre_producto
     INTO:HIJO;


   TAM = STRLEN(RTRIM(NEW.id_padre_producto));

   if (PADRE IS NULL) then
   BEGIN
     EXCEPTION exception_padrenoexiste;
   END
ELSE
   begin
         SELECT max(ID_PRODUCTOS) FROM PRODUCTOS
         WHERE
         ID_PADRE_PRODUCTO = NEW.id_padre_producto
         INTO: HIJOMAXIMO;
/*EVALUACION DEL NIVEL 1 */
    if (STRLEN(RTRIM(NEW.id_padre_producto))=1) then
       BEGIN
           IF(HIJOMAXIMO IS NULL) THEN
            HIJO=0;
           ELSE
           BEGIN
               SELECT SUBSTR(RTRIM(ID_PRODUCTOS),2,3) FROM PRODUCTOS WHERE
               ID_PRODUCTOS=RTRIM(:HIJOMAXIMO)
               INTO: HIJO;
              if (RTRIM(HIJO)='00') then
                 HIJO = 0;
                 ELSE
                 HIJO=HIJO+1;
          END

          IF (HIJO <10) THEN
                   NEW.ID_PRODUCTOS = RTRIM(PADRE)||'0' || HIJO ;
            ELSE
                 if (HIJO <100) then
                     BEGIN
                         NEW.ID_PRODUCTOS = RTRIM(PADRE)|| HIJO;
                     END
                 ELSE
                     EXCEPTION EXCEPTION_OVER;
     END
/*EVALUACION NIVEL 2*/
      if (TAM = 3 ) then
           BEGIN
           SELECT SUBSTR(RTRIM(ID_PRODUCTOS),4,5) FROM PRODUCTOS WHERE
               ID_PRODUCTOS=RTRIM(:HIJOMAXIMO)
               INTO: HIJO;
           if (HIJO IS NULL) then
             HIJO =0;
           ELSE
               HIJO =HIJO+1;
             IF (HIJO <10) THEN
                   NEW.ID_PRODUCTOS = RTRIM(PADRE)||'0' || HIJO ;
                ELSE
                 if (HIJO <100) then
                     BEGIN
                         NEW.ID_PRODUCTOS = RTRIM(PADRE )|| HIJO;
                     END
                 ELSE
                     EXCEPTION EXCEPTION_OVER;

         /*       IF (HIJO <10) THEN
                         BEGIN
                               HIJO=:HIJO +1 ;
                               NEW.ID_PRODUCTOS = RTRIM(PADRE)||'0' || HIJO  ;
                         END
                ELSE
                      BEGIN
                      NEW.ID_PRODUCTOS = RTRIM(PADRE)|| HIJO;
                      END*/
           END

           if (TAM = 5 ) then
           BEGIN
                IF (HIJO <10) THEN
                    BEGIN
                         HIJO=:HIJO +1 ;
                         NEW.ID_PRODUCTOS = RTRIM(PADRE)||'0' || HIJO  ;
                    END
                 ELSE
                 if (HIJO <100) then
                     BEGIN
                         NEW.ID_PRODUCTOS = RTRIM(PADRE )|| HIJO;
                     END
                 ELSE
                     EXCEPTION EXCEPTION_OVER;
                     
           END

           if (TAM = 7 ) then
           BEGIN
                IF (HIJO <10) THEN
                   BEGIN
                   HIJO=:HIJO +1 ;
                   NEW.ID_PRODUCTOS = RTRIM(PADRE)||'0' || HIJO  ;
                   END
                ELSE
                    BEGIN
                    NEW.ID_PRODUCTOS = RTRIM(PADRE )|| HIJO;
                END
           END

           if (TAM = 9 ) then
           BEGIN
                IF (HIJO <10) THEN
                BEGIN
                    HIJO=:HIJO +1 ;
                    NEW.ID_PRODUCTOS = RTRIM(PADRE)||'0' || HIJO  ;
                END
           ELSE
               BEGIN
                NEW.ID_PRODUCTOS = RTRIM(PADRE )|| HIJO;
               END
           END

          if (TAM = 11 ) then
          BEGIN
                IF (HIJO <10) THEN
                   BEGIN
                     HIJO=:HIJO +1 ;
                     NEW.ID_PRODUCTOS = RTRIM(PADRE)||'0' || HIJO  ;
                    END
                 ELSE
                    BEGIN
                    NEW.ID_PRODUCTOS = RTRIM(PADRE )|| HIJO;
                 END
          END
      NEW.hijos= 0;

      END
  END
END
END

    This file was generated with EMS InterBase/FireBird Manager (www.ibmanager.com) at 09/06/2005 05:52 p.m. Previous topic Chapter index Next topic